#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include<iostream>
using namespace std;
#define S(x,y,z) (((x)+(y)+(z))/2)
#define area(s,a,b,c) sqrt(s*(s-a)*(s-b)*(s-c))


int main()
{

	double a, b, c;
	cin >> a >> b >> c;
	double s = 0;
	s = S(a, b, c);
	cout << s << endl;
	cout << area(s,a, b, c);
}
//int main()
//{
//	int sum = 0, tmp = 0,i=0,n=0,j=0,ic;
//	for (i = 1; i <= 100000; i++)
//	{
//		ic = i;
//		tmp = i;
//		int m = i;
//		n = 0;
//		while (m)
//		{
//			m = m / 10;
//			n++;
//		}
//		sum = 0;
//		for (j = 1; j <= n; j++)
//		{
//			sum += pow(tmp%10, n);
//			tmp /= 10;
//		}
//		if (ic == sum)
//			printf("%d ", ic);
//
//	}
//
//	return 0;
//}

//int main()
//{
//	int tmp = 0, i = 0, n = 0, j = 0, ic;
//	for (i = 1; i <= 100000; i++)
//	{
//		ic = i;
//		tmp = i;
//		int m = i;
//		n = 0;
//		while (m)
//		{
//			m = m / 10;
//			n++;
//		}
//		if (ic == mod(n,tmp))
//			printf("%d ", ic);
//
//	}
//
//	return 0;
//}


int fun(int n)
{
	if (n < 100 || n >= 1000)
		return 0;
	int sum = 0;
	int a = n % 10, b = n / 10 % 10, c = n / 100 % 10;
	sum += a * a * a + b * b * b + c * c * c;

}


//int main()
//{
//	int n = 153;
//	int flag = fun(n);
//	if (flag)
//		cout << "yes";
//	else
//		cout << "no";
//}
int mod(int n, int tmp)
{
	int sum = 0;
	for (int j = 1; j <= n; j++)
	{
		sum += pow(tmp % 10, n);
		tmp /= 10;
	}

	return sum;


}



//int main()
//{
//	int tmp = 0, i = 0, n = 0, j = 0, ic;
//	for (i = 100; i <= 1000; i++)
//	{
//		ic = i;
//		tmp = i;
//		int m = i;
//		n = 0;
//		while (m)
//		{
//			m = m / 10;
//			n++;
//		}
//		if (ic == mod(n, tmp))
//			printf("%d ", ic);
//
//	}
//
//	return 0;
//}
//
//
//int mod(int n, int tmp)
//{
//	int sum = 0;
//	for (int j = 1; j <= n; j++)
//	{
//		sum += pow(tmp % 10, n);
//		tmp /= 10;
//	}
//
//	return sum;
//
//
//}


